package com.pe.regope.presentacion.controller.procesos;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import org.primefaces.event.SelectEvent;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.pe.regope.util.Util;

import com.pe.regope.negocio.service.IpnpService;
import com.pe.regope.negocio.dto.TipoIpnpDTO;
import com.pe.regope.negocio.dto.TipoEnvioRoDTO;
import com.pe.regope.negocio.dto.ConclusionDTO;
import com.pe.regope.negocio.dto.ModalOpeDTO;



@Controller
@Scope("view")
public class ProcesoIPNPController {
	
	private String nroIpnp;
	private Date fechaAclara;
	private Date fechaIpnp;
	private String numAclara;
	
	//Lista total del desplegable
	List<ModalOpeDTO> listModalidad;
	List<ConclusionDTO> listConclusion;
	List<TipoEnvioRoDTO> listTipoEnvioRo;
	List<TipoIpnpDTO> listTipoIpnp;
		
	//Item seleccionado del desplegable
	ModalOpeDTO modalidadSelec;
	ConclusionDTO conclusionSelec;
	TipoEnvioRoDTO tipoEnvioRoSelec;
	TipoIpnpDTO tipoIpnpSelec;
	
	String mensaje;
	
	Integer tipoPersona;
	String tipoDoc;
	String numDoc;
	String nroRegistro;
	String apPatORRazonSocial;
	String apMat;
	String nombres;
	String nacionalidad;
	Date fecNac;
	Integer estadoCivil;
	
	
	
	
	@Resource
	IpnpService ipnpService;
	
	@PostConstruct
	public void init(){
		//declaracion de cada uno de las listas
		listTipoIpnp = new ArrayList<TipoIpnpDTO>();
		listTipoEnvioRo = new ArrayList<TipoEnvioRoDTO>();
		listConclusion = new ArrayList<ConclusionDTO>();
		listModalidad = new ArrayList<ModalOpeDTO>();
		
		//llenado de listas
		listTipoIpnp = ipnpService.obtenerListaTipoIpnp();
		listTipoEnvioRo = ipnpService.obtenerListaTipoEnvioRo();
		listConclusion = ipnpService.obtenerListaConclusion();
		listModalidad = ipnpService.obtenerListaModalidad();
		
	}
	
	public  void validarNroIpnpNuevo(){
		System.out.println(mensaje);
		if(ipnpService.verificarSiExisteIpnp(this.nroIpnp)){
			Util.mostrarMensajes("Informacion", "Es un numero valido");
		} else {
			Util.mostrarMensajes("Informacion", "Este numero ya ha sido utilizado");
		}
	}
	
	public void guardarIpnp(){
		ipnpService.ingresarIPNP(nroIpnp, fechaIpnp, numAclara, fechaAclara, tipoIpnpSelec, conclusionSelec);
	}
	
	
	public void onDateSelect(SelectEvent event) {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Date Selected", format.format(event.getObject())));
    }


	public List<TipoIpnpDTO> getListTipoIpnp() {
		return listTipoIpnp;
	}


	public void setListTipoIpnp(List<TipoIpnpDTO> listTipoIpnp) {
		this.listTipoIpnp = listTipoIpnp;
	}


	public TipoIpnpDTO getTipoIpnpSelec() {
		return tipoIpnpSelec;
	}


	public Integer getTipoPersona() {
		return tipoPersona;
	}

	public void setTipoPersona(Integer tipoPersona) {
		this.tipoPersona = tipoPersona;
	}

	public String getTipoDoc() {
		return tipoDoc;
	}

	public void setTipoDoc(String tipoDoc) {
		this.tipoDoc = tipoDoc;
	}

	public String getNumDoc() {
		return numDoc;
	}

	public void setNumDoc(String numDoc) {
		this.numDoc = numDoc;
	}

	public String getNroRegistro() {
		return nroRegistro;
	}

	public void setNroRegistro(String nroRegistro) {
		this.nroRegistro = nroRegistro;
	}

	public String getApPatORRazonSocial() {
		return apPatORRazonSocial;
	}

	public void setApPatORRazonSocial(String apPatORRazonSocial) {
		this.apPatORRazonSocial = apPatORRazonSocial;
	}

	public String getApMat() {
		return apMat;
	}

	public void setApMat(String apMat) {
		this.apMat = apMat;
	}

	public String getNombres() {
		return nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	public String getNacionalidad() {
		return nacionalidad;
	}

	public void setNacionalidad(String nacionalidad) {
		this.nacionalidad = nacionalidad;
	}

	public Date getFecNac() {
		return fecNac;
	}

	public void setFecNac(Date fecNac) {
		this.fecNac = fecNac;
	}

	public Integer getEstadoCivil() {
		return estadoCivil;
	}

	public void setEstadoCivil(Integer estadoCivil) {
		this.estadoCivil = estadoCivil;
	}

	public void setTipoIpnpSelec(TipoIpnpDTO tipoIpnpSelec) {
		this.tipoIpnpSelec = tipoIpnpSelec;
	}


	public List<TipoEnvioRoDTO> getListTipoEnvioRo() {
		return listTipoEnvioRo;
	}


	public void setListTipoEnvioRo(List<TipoEnvioRoDTO> listTipoEnvioRo) {
		this.listTipoEnvioRo = listTipoEnvioRo;
	}


	public TipoEnvioRoDTO getTipoEnvioRoSelec() {
		return tipoEnvioRoSelec;
	}


	public void setTipoEnvioRoSelec(TipoEnvioRoDTO tipoEnvioRoSelec) {
		this.tipoEnvioRoSelec = tipoEnvioRoSelec;
	}


	public List<ConclusionDTO> getListConclusion() {
		return listConclusion;
	}


	public void setListConclusion(List<ConclusionDTO> listConclusion) {
		this.listConclusion = listConclusion;
	}


	public ConclusionDTO getConclusionSelec() {
		return conclusionSelec;
	}


	public void setConclusionSelec(ConclusionDTO conclusionSelec) {
		this.conclusionSelec = conclusionSelec;
	}


	public List<ModalOpeDTO> getListModalidad() {
		return listModalidad;
	}


	public void setListModalidad(List<ModalOpeDTO> listModalidad) {
		this.listModalidad = listModalidad;
	}


	public ModalOpeDTO getModalidadSelec() {
		return modalidadSelec;
	}


	public void setModalidadSelec(ModalOpeDTO modalidadSelec) {
		this.modalidadSelec = modalidadSelec;
	}


	public String getNroIpnp() {
		return nroIpnp;
	}


	public void setNroIpnp(String nroIpnp) {
		this.nroIpnp = nroIpnp;
	}

	public String getMensaje() {
		return mensaje;
	}

	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}

	public Date getFechaAclara() {
		return fechaAclara;
	}

	public void setFechaAclara(Date fechaAclara) {
		this.fechaAclara = fechaAclara;
	}

	public Date getFechaIpnp() {
		return fechaIpnp;
	}

	public void setFechaIpnp(Date fechaIpnp) {
		this.fechaIpnp = fechaIpnp;
	}

	public String getNumAclara() {
		return numAclara;
	}

	public void setNumAclara(String numAclara) {
		this.numAclara = numAclara;
	}

	
	
}
